package yaml

import (
	"Gin-Server-01/com/server/core/config"
	"fmt"
	"gopkg.in/yaml.v3"
	"io/ioutil"
)

/**
 * @Author Administrator
 * @Description 解析yaml配置工具类
 * @Date 2023/8/2 21:34
 * @Version 1.0
 */

// ParseYAMLFile 解析YAML文件并返回Config对象
//
//	@Description:
//	@param: filePath
//	@return *pojo.Config
//	@return error
func ParseYAMLFile(filePath string) (*config.Config, error) {
	// 读取YAML文件内容
	yamlFile, err := ioutil.ReadFile(filePath)
	if err != nil {
		return nil, err
	}

	// 创建Config对象
	config := &config.Config{}

	// 解析YAML内容
	err = yaml.Unmarshal(yamlFile, config)
	if err != nil {
		return nil, err
	}

	return config, nil
}

// ParseYAMLFileNoErr
//
//	@Description:  屏蔽错误
//	@param: filePath
//	@return *config.Config
func ParseYAMLFileNoErr(filePath string) *config.Config {
	// 读取YAML文件内容
	yamlFile, err := ioutil.ReadFile(filePath)
	if err != nil {
		return nil
	}

	// 创建Config对象
	config := &config.Config{}

	// 解析YAML内容
	err = yaml.Unmarshal(yamlFile, config)
	if err != nil {
		return nil
	}

	return config
}

// ParseYAMLDefaultFileNoErr
//
//	@Description: 解析默认文件application.yaml
//	@param: filePath
//	@return *config.Config
func ParseYAMLDefaultFileNoErr() *config.Config {
	// 读取YAML文件内容
	yamlFile, err := ioutil.ReadFile("./application.yaml")
	if err != nil {
		yamlFile, err = ioutil.ReadFile("./application.yml")
		if err != nil {
			fmt.Println("application配置文件加载失败！")
			return nil
		}

	}

	// 创建Config对象
	config := &config.Config{}

	// 解析YAML内容
	err = yaml.Unmarshal(yamlFile, config)
	if err != nil {
		return nil
	}

	return config
}

func main() {
	filePath := "./application.yaml" // 替换为实际的YAML文件路径

	config, err := ParseYAMLFile(filePath)
	if err != nil {
		fmt.Println("解析YAML文件时发生错误:", err)
		return
	}

	// 打印解析结果
	fmt.Println(*config)
}
